﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CaptureVision.Sunflower
{
    /// <summary>
    /// 3D-vector generic Property.
    /// </summary>
    /// <typeparam name="TPropertyType">The type of the property type.</typeparam>
    public class Vec3Property<TPropertyType> : VectorProperty<Vec3<TPropertyType>, TPropertyType>
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="Vec3Property&lt;TPropertyType&gt;"/> class.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="elementNames">The element names.</param>
        public Vec3Property(string name, params string[] elementNames)
            : base(name, 
                   elementNames)
        { }


        /// <summary>
        /// Initializes a new instance of the <see cref="Vec3Property&lt;TPropertyType&gt;"/> class.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="vector">The vector.</param>
        /// <param name="elementNames">The element names.</param>
        public Vec3Property(string name, Vec3<TPropertyType> vector, params string[] elementNames) 
            :  base(name, 
                    vector, 
                    elementNames)
        {}


        /// <summary>
        /// Initializes a new instance of the <see cref="Vec3Property&lt;TPropertyType&gt;"/> class.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="x">The x.</param>
        /// <param name="y">The y.</param>
        /// <param name="z">The z.</param>
        /// <param name="elementNames">The element names.</param>
        public Vec3Property(string name, TPropertyType x, TPropertyType y, TPropertyType z, params string[] elementNames)
            : base(name, 
                   new Vec3<TPropertyType>() {X = x, Y = y, Z = z}, 
                   elementNames)
        { }



    }

 
}
